package com.example.certificate.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.certificate.dto.BasePageDTO;
import com.example.certificate.dto.InsResourceDto;
import com.example.certificate.dto.common.DelByIdDto;
import com.example.certificate.dto.common.DisableStatDto;
import com.example.certificate.entity.SysResource;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.certificate.entity.Tree;
import com.example.certificate.entity.User;
import com.example.certificate.execption.BusinessException;
import com.example.certificate.utils.ResultEntity;

import java.util.List;

/**
 * <p>
 * 菜单表	 服务类
 * </p>
 *
 * @author hao
 * @since 2022-02-16 11:29:59
 */
public interface SysResourceService extends IService<SysResource> {
    /**
     * 查询所以路由
     * @return
     */
    List<SysResource> routingHop(User user);

    /*
     * @Author Hao
     * @Description  新增路由设置
     * @Date 2021/12/30
     * @Param [dto]
     * @return com.han.internation.utils.ResultEntity
     **/
    ResultEntity insSysResource(InsResourceDto dto) throws BusinessException;

    /**
     * @Author Hao
     * @Description  查询所以路由信息
     * @Date 2021/12/31
     * @Param []
     * @return java.util.List<com.han.internation.domain.entity.sys.SysResource>
     **/
    List<SysResource> selAllRouter();

    /*
     * @Author Hao
     * @Description  获取树形控件
     * @Date 2022/1/2
     * @Param
     * @return
     **/
    List<Tree> getTreeResource();

    /**
     * @Author Hao
     * @Description  分页查询菜单数据
     * @Date 2022/1/2
     * @Param [dto]
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.han.internation.domain.entity.sys.SysResource>
     **/
    Page<SysResource> getResourcePage(BasePageDTO dto);

    /**
     * @Author Hao
     * @Description  修改路由状态
     * @Date 2022/1/3
     * @Param [dto]
     * @return com.han.internation.utils.ResultEntity
     **/
    ResultEntity updateStatus(DisableStatDto dto);

    /**
     * @Author Hao
     * @Description  删除路由设置
     * @Date 2022/1/3
     * @Param [dto]
     * @return com.han.internation.utils.ResultEntity
     **/
    ResultEntity delById(DelByIdDto dto);

    /**
     * @Author Hao
     * @Description  根据id获取菜单数据
     * @Date 2022/1/3
     * @Param []
     * @return com.han.internation.domain.entity.sys.SysResource
     **/
    SysResource getResourceById(DelByIdDto dto);

    /**
     * @Author Hao
     * @Description  修改菜单数据
     * @Date 2022/1/5
     * @Param [resource]
     * @return com.han.internation.utils.ResultEntity
     **/
    ResultEntity updateResource(SysResource resource);

    /**
     * @Author Hao
     * @Description  获取权限分配时候的菜单数据
     * @Date 2022/1/13
     * @Param []
     * @return java.util.List<com.han.internation.domain.entity.sys.Tree>
     **/
    List<Tree> getAuthAllocation();
}
